//基于axios封装，网络请求的函数
import axios from "axios"
import store from "@/store"
import router from '@/router'
import { Message } from "element-ui"

export const baseURL = 'http://big-event-vue-api-t.itheima.net'

const myAxios = axios.create({
    baseURL
})

//请求拦截器
myAxios.interceptors.request.use( config => {
    //发请求时，统一携带请求头Authorization 和 token
    //判断 登录和注册页面，vuex里无token,且登录接口和注册接口也不需要携带token（其他页面需要）
    if(store.state.token) {
        config.headers.Authorization = store.state.token
    }

    return config

}, error => {
    return  Promise.reject(error)
})

//响应拦截器
myAxios.interceptors.response.use( response => {
    return response
}, error => {

    //判断token过期了
    if(error.response.status === 401) {
        //清除vuex里的一切
        store.commit('UPDATETOKEN', '')
        store.commit('UPDATEUSERINFO', {})

        //跳转到登录
        router.push('/login')
        
        Message.error('用户身份已过期')
    } 

    return Promise.reject(error)
})

export default myAxios